﻿using System;
using System.IO;
using MiWebSite_Core;
using Newtonsoft.Json;
using WLMCoreLibrary;

namespace MWS_AddDirectory.Handlers
{
    public partial class ImageUpload : System.Web.UI.Page
    {
        private WebSiteMainConfiguration config = WebSiteMainConfiguration.GetConfig();
        private dbConnector ConexionDB;

        protected void Page_Load( object sender, EventArgs e )
        {
            ConexionDB = new dbConnector( config.Connections[0].value );
            Response.Clear();
            Response.ContentType = "application/json";
            Response.HeaderEncoding = System.Text.Encoding.UTF8;
            int idGaleria=GuardarGaleria();
            Response.Write( GuardarArchivo( idGaleria ) );
            ConexionDB.CloseConnection();
            Response.End();
        }

        protected int GuardarGaleria()
        {
            Galeria galeria=new Galeria(); ;
            int idGaleria=0;
            if ( Request["idGaleria"] != null )
            {
                galeria = new Galeria( Convert.ToInt32( Request["idGaleria"] ), ref ConexionDB );
                galeria.noFotos++;
                galeria.Save();
            }
            else
            {
                if ( Request["newGaleria"] != null )
                {
                    galeria = new Galeria( ref ConexionDB );
                    galeria.nombre = Request["nombreGaleria"];
                    galeria.descripcion = Request["descripcionGaleria"];
                    galeria.noFotos++;
                    galeria.Save();
                    idGaleria = galeria.id;
                }
            }

            //Response.Write(WLMFunctions.SerializeObject(galeria,true));
            return galeria.id;
        }

        protected string GuardarArchivo( int idGaleria )
        {
            config = WebSiteMainConfiguration.GetConfig();
            ConexionDB = new dbConnector( config.Connections["WebSite"].value );
            if ( Request.QueryString["id"] != null )
            {
                MiWebSiteMediaImages image = new MiWebSiteMediaImages( Convert.ToInt32( Request.QueryString["id"] ), ref ConexionDB );
                Response.ContentType = "text/xml";
                Response.Write( WLMFunctions.SerializeObject( image, true ) );

                //Response.Write("{\"success\":true,\"filename\":\"http://" + CurrentDomain.SubDomain + "." + CurrentDomain.DomainName + imagen.URLImagen + "\"}");//+imagen.id + "|" + imagen.URLImagen);
                ConexionDB.CloseConnection();
            }
            else

                try
                {
                    MemoryStream memory = new MemoryStream();
                    string filename = Request["qqFile"];
                    var length = 4096;
                    var bytesRead = 0;
                    var buffer = new Byte[length];
                    do
                    {
                        bytesRead = Request.InputStream.Read( buffer, 0, length );
                        memory.Write( buffer, 0, bytesRead );
                    } while ( bytesRead > 0 );

                    Guid idUnico = Guid.NewGuid();
                    string extencion = filename.Split( '.' )[filename.Split( '.' ).Length - 1];
                    string RutaGuardadoArchivo = config.Settings["imagePath"].value + idUnico + "." + extencion;
                    MiWebSiteMediaImages imagen = new MiWebSiteMediaImages( ref ConexionDB );
                    imagen.archivo = idUnico + "." + extencion;
                    imagen.idCategoria = idGaleria;
                    imagen.tamano = imagen.OptimizarImagen( memory );
                    if ( Request["descripcion"] == null )
                        imagen.descripcion = "archivo original: " + filename;
                    else
                        imagen.descripcion = Request["descripcion"];
                    if ( Request["titulo"] == null )
                        imagen.titulo = "Imagen para anuncio";
                    else
                        imagen.titulo = Request["titulo"];
                    imagen.Save();

                    return JsonConvert.SerializeObject( new SuccessObject( SuccessCode.RegistrySaved, "", imagen ) );

                    //return WLMFunctions.SerializeObject(new SuccessObject(SuccessCode.RegistrySaved, "", WLMFunctions.SerializeObject(imagen)),true);

                    //imagen.OptimizarImagen();
                    if ( Request.QueryString["responseType"] != null )
                    {
                        if ( Request.QueryString["responseType"] == "json" )
                        {
                            Response.Write( "{\"success\":true,\"filename\":\"http://" + CurrentDomain.SubDomain + "." + CurrentDomain.DomainName + imagen.URLImagen + "\",\"idImagen\":\"" + imagen.id + "\"}" );//+imagen.id + "|" + imagen.URLImagen);
                        }
                    }
                    else
                    {
                        Response.ContentType = "text/xml";
                        Response.Write( WLMFunctions.SerializeObject( imagen, true ) );
                    }

                    //

                    ConexionDB.CloseConnection();
                    imagen.Dispose();
                }
                catch ( Exception ex )
                {
                    return ex.Message + ex.StackTrace;
                }
            return "";
        }
    }
}